Modulation codes are used in magnetic recording channels in order to limit recorded bit sequences to those that are most reliably detectable. In particular, run length limited (RLL) modulation codes have been used with partial response signaling, maximum likelihood detection (PRML) channels, decision feedback equalization (DFE) channels, and the like. Partial response systems of interest for magnetic data storage devices such as disk drives and magnetic tape include a PR4 (1-D.sup.2) channel and EPR4 (1+D-D.sup.2 -D.sup.3) channel as well as other nonclassical polynomials. The present invention can be used with any PR or DFE channel.
In general, magnetic recording systems employ Viterbi detectors to achieve maximum likelihood detection of user data as it is played back from the recording medium. A modulation code for a PRML data recording and playback channel is selected to balance code efficiency against timing/gain loop reliability, as well as error propagation during decoding. RLL codes limit the length of the all zeros sequence, the all ones sequence, and the Nyquist sequence . . . 0101 . . . here using the NRZ notation, which corresponds to magnetization on a disk, tape or other magnetic recording medium. In channels of current interest, these sequences contain little or no timing information necessary for proper operation of the playback system. According, codes are designed to exclude them from permissible codewords.
Run length limited modulation codes are often described using the format "(rate) RLL (d,G/I)" where the "(rate)" is expressed as a ratio of the number of input bits to be encoded to the number of output bits in the resulting codeword. (The letters G and I represent global and interleave run length constraints, respectively.) For example, a rate 8/9 modulation code converts an 8-bit input byte into a 9-bit codeword. Rate 8/9 encoding is well known in the art, as described, for example, in U.S. Pat. Nos. 4,707,681 and 5,260,703. Rate 8/9 encoding for PRML data channels also is described in U.S. Pat. No. 5,196,849. As the code rate approaches unity, the code is deemed to be more efficient, in that relatively fewer code characters are required to encode user data values. Thus, a rate 8/9 code is more efficient than a rate 2/3 code.
Similarly, a rate 16/17 code is more efficient than a rate 8/9 code. A rate 16/17 code (=0.941) achieves an approximately 6% increase in recording density over a standard rate 8/9 modulation code. One example of a rate 16/17 modulation code is described in commonly assigned U.S. Pat. No. 5,635,933 incorporated herein by this reference. Another rate 16/17 code is described in U.S. Pat. No. 5,784,010 assigned to IBM.
Early PRML read channels used the well-known rate 8/9 RLL(0,4/4) channel code. In accordance with prior art, this channel code is combined with a 1/(1.sym.D) modulo 2 precoder to obtain the {+1,-1} valued magnetic write-current pattern. On the decoder side, the signal is first equalized to the partial response target and then the +1/-1 write-current waveform is maximum-likelihood detected. The write current is then "unprecoded" (or postcoded) with a 1.sym.D modulo 2 function. This "undoes" the precoding to regenerate a {0,1} valued sequence. The data is then RLL decoded for the user. Examples of RLL encoders and decoders are disclosed in the patents identified above.
The rate 8/9 code can be extended to a rate 16/17 code by either bit-wise or byte-wise interleaving unencoded bytes with the encoded sequence. While the G and I constraints will become considerably larger (G=12, I=8 for byte-wise interleaved case), the roughly 6% in increased code rate is often considered worthwhile. About the highest code rate described in the literature is a rate 24/25 code described in commonly-assigned U.S. Pat. No. 5,757,294.
The need remains for improvements in recording channel encoding efficiency in order to improve storage capacities in recording systems and lower costs. More specifically, the need remains to find code constraints than can be used to obtain high-rate, runlength limited (RLL) codes with optimized error propagation and simple implementation. Moreover, such codes are often used with an outer error correcting code (ECC). To ensure reliable recovery of the data, the error propagation characteristics of the RLL code with the ECC should be minimized. The new codes described below are designed to minimize error propagation with an ECC based on 8-bit symbols. The codes described in this patent application are (0,K) codes. The K constraint is equivalent to the G constraint. The 0 here means that consecutive ones are allowed, i.e. there is no restriction on the minimum run length of zeros.